import { fileURLToPath, URL } from 'node:url';

import { defineConfig } from 'vite';
import legacy from '@vitejs/plugin-legacy';
import vue2 from '@vitejs/plugin-vue2';
import vue2Jsx from '@vitejs/plugin-vue2-jsx';
import mkcert from 'vite-plugin-mkcert';
import { resolve } from 'path';
import commonjs from 'vite-plugin-commonjs'
import rawPlugin from 'vite-plugin-raw';

// https://vitejs.dev/config/
export default defineConfig({
  server: {
    host: true,
    https: true,
  },
  base: './',
  plugins: [
    vue2(),
    vue2Jsx(),
    legacy({
      targets: ['ie >= 11'],
      additionalLegacyPolyfills: ['regenerator-runtime/runtime'],
    }),
    mkcert(),
    commonjs(/* options */),
    rawPlugin({
      match: /\.bpmn$/,
    }),
  ],
  assetsInclude: ['**/*.bpmn'],
  resolve: {
    alias: {
      '@': resolve(__dirname, 'src'),
      '@bpmn': resolve(__dirname, 'src/views/bpmn'),
    },
  },
  css: {
    preprocessorOptions: {
      less: {
          modifyVars: {
            '@primary-color': '#252B48;', // 全局主色
            '@link-color': '#1890ff;', // 链接色
            '@success-color': '#52c41a;', // 成功色
            '@warning-color': '#faad14;', // 警告色
            '@error-color': '#f5222d;', // 错误色
            '@font-size - base': '14px;', // 主字号
            '@heading-color': 'rgba(0, 0, 0, 0.85);', // 标题色
            '@text-color': 'rgba(0, 0, 0, 0.65);', // 主文本色
            '@text-color - secondary': 'rgba(0, 0, 0, 0.45);', // 次文本色
            '@disabled-color': 'rgba(0, 0, 0, 0.25);', // 失效色
            '@border-radius - base': '2px;', // 组件/浮层圆角
            '@border-color - base': '#d9d9d9;', // 边框色
            '@box-shadow - base': '0 3px 6px - 4px rgba(0, 0, 0, 0.12), 0 6px 16px 0 rgba(0, 0, 0, 0.08), 0 9px 28px 8px rgba(0, 0, 0, 0.05);', // 浮层阴影
            '@tabs-hover-color': '#fff;',
            '@tabs-active-color': '#fff;',
            '@btn-primary-bg': '#252B48;',
            '@btn-default-bg': '#252B48;',
            '@switch-color': '#252B48;'
        },
        javascriptEnabled: true,
      },
    },
  },
  build: {
    assetsInlineLimit: 1024000, // 1000KB
    minify: 'terser',
    terserOptions: {
      compress: {
        drop_console: true,
      },
      format: {
        comments: false,
      },
    },
  },
});
